home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / Replacements / cpdist_0_17.lha / cpdist-0.17 / source / expand.c < prev    next >
C/C++ Source or Header  |  1994-05-28  |  747b  |  44 lines

  1. /*
  2.  *  RESIZE_BUFFER.C
  3.  *
  4.  *  (c)Copyright 1992 by Tobias Ferber,  All Rights Reserved
  5.  */
  6.  
  7. #include <string.h>
  8.  
  9. #define MAXIMUM_BUFFERSIZE (64*1024)
  10.  
  11.  
  12.  
  13.  
  14. int resize_buffer(buffer, oldsize, newsize)
  15. unsigned char **buffer;
  16. unsigned long oldsize, newsize;
  17. {
  18.   char *newbuf= (char *)0L;
  19.  
  20.   if(newsize <= MAXIMUM_BUFFERSIZE)
  21.   {
  22.     if( newbuf= (char *)malloc(newsize) )
  23.     {
  24.       if(*buffer)
  25.       {
  26.         if(oldsize >= newsize)
  27.         {
  28.           memcpy(newbuf, *buffer, newsize);
  29.         }
  30.         else /* oldsize < newsize */
  31.         {
  32.           memcpy(newbuf, *buffer, oldsize);
  33.           memset(&newbuf[oldsize], '\0', newsize-oldsize);
  34.         }
  35.  
  36.         free(*buffer);
  37.       }
  38.  
  39.       *buffer= newbuf;
  40.     }
  41.   }
  42.  
  43.   return newbuf ? 1 : 0;
  44. }